#include <stdio.h>
#include "seq_list.cpp"

// 四题五题都在这
// 删除有序表范围内的值 s t 不合适/顺序表为空 输出错误
// 利用有序条件 查找删除区间
// 默认包括 s 和 t
bool DelNum(SeqList &L, int s, int t)
{
    if (L.length < 1)
    {
        printf("顺序表为空");
        return false;
    }

    if (s > t)
    {
        printf("s,t不合理");
        return false;
    }

    int i = 0, j = 0;
    for (; i < L.length && L.data[i] < s; i++)
        ;
    if (i >= L.length)
        return false;
    for (j = i; j < L.length && L.data[j] <= t; j++)
        ;

    // 删除 i j 之间的元素
    while (j < L.length)
        L.data[i++] = L.data[j++];

    L.length = i;

    return true;
}
// 有序无序通用
bool DelNum2(SeqList &L, int s, int t)
{
    // 省略错误判断输出
    if (L.length < 1 || s > t)
        return false;

    int index = 0;
    for (int i = 0; i < L.length; i++)
        if (!(L.data[i] >= s && L.data[i] <= t))
            L.data[index++] = L.data[i];

    L.length = index;

    return true;
}
int main()
{
    SeqList L;
    InitList(L);

    ListAppend(L, 2);
    ListAppend(L, 3);
    ListAppend(L, 4);
    ListAppend(L, 5);
    ListAppend(L, 6);
    ListAppend(L, 8);
    PrintList(L);

    DelNum(L, 3, 7);
    PrintList(L);

    return 0;
}